Entity Relationship এর ধারণা

Java Technologies - স্প্রিং বুট ওআরএম (Spring Boot ORM) - Entity Relationships (One-to-One, One-to-Many, Many-to-Many)
179

স্প্রিং বুট ORM (Object-Relational Mapping) ব্যবহার করার সময় ডেটাবেস টেবিলগুলোর মধ্যে সম্পর্ক স্থাপন করার জন্য Entity Relationship খুব গুরুত্বপূর্ণ। Entity Relationship বিভিন্ন ডেটাবেস টেবিল এবং তাদের মধ্যে থাকা সম্পর্কগুলো জাভা ক্লাসের মাধ্যমে প্রকাশ করে।


Entity Relationship এর ধরন

ডেটাবেসে সাধারণত তিন ধরণের সম্পর্ক থাকে, এবং এগুলো Entity Relationship এর মাধ্যমে স্প্রিং বুট ORM-এ প্রকাশ করা হয়:

১. One-to-One (১:১ সম্পর্ক)

একটি টেবিলের একটি রেকর্ড আরেকটি টেবিলের একটি রেকর্ডের সাথে সম্পর্কযুক্ত থাকে।

২. One-to-Many এবং Many-to-One (১:একাধিক এবং একাধিক:১ সম্পর্ক)

একটি টেবিলের একটি রেকর্ড আরেকটি টেবিলের একাধিক রেকর্ডের সাথে সম্পর্কযুক্ত থাকে।

৩. Many-to-Many (একাধিক:একাধিক সম্পর্ক)

একটি টেবিলের একাধিক রেকর্ড আরেকটি টেবিলের একাধিক রেকর্ডের সাথে সম্পর্কযুক্ত থাকে।


স্প্রিং বুটে Entity Relationship এর অ্যানোটেশন

Spring Boot ORM (Hibernate) এ Entity Relationship প্রকাশ করার জন্য নিম্নলিখিত অ্যানোটেশনগুলো ব্যবহার করা হয়:

  • @OneToOne
  • @OneToMany
  • @ManyToOne
  • @ManyToMany
  • @JoinColumn
  • @JoinTable

Entity Relationship এর উদাহরণ

১. One-to-One সম্পর্ক

একজন ব্যবহারকারীর একটি প্রোফাইল থাকতে পারে।

import jakarta.persistence.*;

@Entity
public class User {

    @Id
    @GeneratedValue
    private Long id;

    private String name;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "profile_id", referencedColumnName = "id")
    private Profile profile;

    // Getters and Setters
}

@Entity
public class Profile {

    @Id
    @GeneratedValue
    private Long id;

    private String bio;

    // Getters and Setters
}

ব্যাখ্যা:

  • @OneToOne: User এবং Profile এর মধ্যে ১:১ সম্পর্ক স্থাপন করে।
  • @JoinColumn: User টেবিলে profile_id কলাম যোগ করে যা Profile টেবিলের id কলামের সাথে যুক্ত।

২. One-to-Many এবং Many-to-One সম্পর্ক

একজন লেখকের অনেক বই থাকতে পারে।

import jakarta.persistence.*;
import java.util.List;

@Entity
public class Author {

    @Id
    @GeneratedValue
    private Long id;

    private String name;

    @OneToMany(mappedBy = "author", cascade = CascadeType.ALL)
    private List<Book> books;

    // Getters and Setters
}

@Entity
public class Book {

    @Id
    @GeneratedValue
    private Long id;

    private String title;

    @ManyToOne
    @JoinColumn(name = "author_id", referencedColumnName = "id")
    private Author author;

    // Getters and Setters
}

ব্যাখ্যা:

  • @OneToMany: একজন লেখকের একাধিক বইয়ের সম্পর্ক নির্দেশ করে।
  • @ManyToOne: একটি বইয়ের সাথে শুধুমাত্র একজন লেখকের সম্পর্ক নির্দেশ করে।
  • mappedBy: Author-এর books ফিল্ড Book Entity-তে সম্পর্ক স্থাপন করে।

৩. Many-to-Many সম্পর্ক

একজন শিক্ষার্থী একাধিক কোর্সে ভর্তি হতে পারে, এবং একটি কোর্সে একাধিক শিক্ষার্থী থাকতে পারে।

import jakarta.persistence.*;
import java.util.Set;

@Entity
public class Student {

    @Id
    @GeneratedValue
    private Long id;

    private String name;

    @ManyToMany
    @JoinTable(
        name = "student_course",
        joinColumns = @JoinColumn(name = "student_id"),
        inverseJoinColumns = @JoinColumn(name = "course_id")
    )
    private Set<Course> courses;

    // Getters and Setters
}

@Entity
public class Course {

    @Id
    @GeneratedValue
    private Long id;

    private String title;

    @ManyToMany(mappedBy = "courses")
    private Set<Student> students;

    // Getters and Setters
}

ব্যাখ্যা:

  • @ManyToMany: Student এবং Course এর মধ্যে একাধিক:একাধিক সম্পর্ক নির্দেশ করে।
  • @JoinTable: সম্পর্কের জন্য একটি মধ্যবর্তী টেবিল (student_course) তৈরি করে।
  • mappedBy: Student-এর courses ফিল্ড এবং Course-এর students ফিল্ডের মধ্যে সম্পর্ক নির্দেশ করে।

Cascade এবং Fetch টাইপ

Entity Relationship এর ক্ষেত্রে Cascade এবং Fetch গুরুত্বপূর্ণ ভূমিকা পালন করে।

Cascade

  • Cascade টাইপ (যেমন ALL, PERSIST, REMOVE) ব্যবহার করে সংযুক্ত Entity-তে নির্দিষ্ট অপারেশন প্রযোজ্য করা যায়।

Fetch

  • Fetch টাইপ (যেমন LAZY, EAGER) ব্যবহার করে ডেটা লোডিং স্ট্র্যাটেজি নির্ধারণ করা হয়।

সারাংশ

Spring Boot ORM এ Entity Relationship বিভিন্ন টেবিলের মধ্যে সম্পর্ক স্থাপন করে ডেটা মডেলিং সহজ করে। @OneToOne, @OneToMany, @ManyToOne, এবং @ManyToMany অ্যানোটেশন ব্যবহার করে ডেটাবেস টেবিলের মধ্যে সম্পর্ক নির্ধারণ করা যায়। এই সম্পর্কগুলোর মাধ্যমে ডেটাবেস অপারেশন আরও কার্যকর এবং পুনঃব্যবহারযোগ্য হয়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...